【PHP】コマンドライン引数 – コマンドライン実行時に値を与える
コマンドラインからPHPプログラムを実行するときに値を与えることができます。
その値をコマンドライン引数と呼び、ここではその使い方について解説します。
検証環境
コマンドライン引数
コマンドライン引数は“コマンドラインからプログラムに与える値”です。
『引数(パラメーター)』はプログラム処理の外部から与える値のことで、コマンドラインから値を与えるため、『コマンドライン引数』と呼びます。
コマンドライン引数を使うと、ソースコードに値を定義する必要がないため、様々な値に対応したプログラムを作成できます。
値の与え方
コマンドライン引数として、プログラムに値を与えるには、phpコマンドの実行時に値を付与します。
基本構文
$ php ソースコードファイル 値1 値2 値3 ...
値はスペースで区切って複数個与えることができます。
※ 末尾の...
は4個目、5個目も付与できるという意味です。
サンプル
$ php sample.php Hello World
このphpコマンドのサンプルは、sample.phpを実行する時にHello
とWorld
の2つの値を与えています。
値の受け取り方
コマンドライン引数の値を受け取るには、ソースコードで$argv
変数を使用します。
$argv
はPHPに初めから用意されている変数です。
配列型で、コマンドライン引数を記憶しています。
配列型の説明は割愛しますが、未学習の方は“複数の値を記憶できる変数”とイメージしてください。
$argv
はphpコマンドを実行した時の、php
以降の文字列をスペース区切りで順番に記憶しています。
基本構文
$argv[キー]
キー(インデックスとも呼ぶ)の部分に取得したいコマンドライン引数の番号を記述します。
サンプル
<?php
// 1個目のコマンドライン引数
___ih_hl_start
echo $argv[0] . "\n";
___ih_hl_end
// 2個目のコマンドライン引数
___ih_hl_start
echo $argv[1] . "\n";
___ih_hl_end
// 3個目のコマンドライン引数
___ih_hl_start
echo $argv[2] . "\n";
___ih_hl_end
?>
$ php sample.php Hello World
sample.php
Hello
World
コマンドラインのphpコマンド実行時にphp
以降のsample.php
、Hello
、World
が$argv
変数に順番に記憶されます。
$argv[キー]
のキー
の部分に指定した番号の値を取得できますが、番号は0から始まることに注意してください。
また、このサンプルから分かるようにソースコードファイル(sample.php
)もコマンドライン引数の1つになっています。
型
コマンドライン引数の型は文字列型です。
数字のみでも文字列型となります。
<?php
var_dump($argv[1]);
var_dump($argv[2]);
?>
$ php sample.php Hello 10000
string(5) "Hello"
string(5) "10000"
スペースを含む値
コマンドライン引数はスペースで区切られます。
そのため、スペースを含む値を与える場合はシングルクォート('
)で括ります。
<?php
echo $argv[1] . "\n";
echo $argv[2] . "\n";
?>
$ php sample.php 'Hello World!' 'Good Morning!'
Hello World!
Good Morning!
演習問題
次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。
- 実行結果の文字列はコマンドライン引数の値を使用
$ php practice.php Good Morning
Good
Morning
次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。
- 実行結果の文字列はコマンドライン引数の値を使用
$ php practice.php 'Have a good night!'
Have a good night!